home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / pc / DirectX SDK / DXSDK / samples / Multimedia / VBSamples / Demos / AirHockey / modAudio.bas < prev    next >
Encoding:
BASIC Source File  |  2001-10-08  |  3.8 KB  |  119 lines

  1. Attribute VB_Name = "modAudio"
  2. Option Explicit
  3.  
  4. 'We will keep our Audio vars here
  5. Dim dmPerf As DirectMusicPerformance8
  6. Dim dmLoad As DirectMusicLoader8
  7. Dim dmSegBank() As DirectMusicSegment8
  8. Dim dmSegHit() As DirectMusicSegment8
  9. Dim dmScore As DirectMusicSegment8
  10.  
  11. Public glNumBankSounds As Long
  12. Public glNumHitSounds As Long
  13.  
  14. Public Sub SetNumberSounds()
  15.     Dim sFile As String
  16.     Dim lCount As Long
  17.     
  18.     lCount = 1
  19.     sFile = Dir$(App.path & "\sounds\bank" & format$(CStr(lCount), "00") & ".wav")
  20.     Do While sFile <> vbNullString
  21.         lCount = lCount + 1
  22.         sFile = Dir$(App.path & "\sounds\bank" & format$(CStr(lCount), "00") & ".wav")
  23.     Loop
  24.     glNumBankSounds = lCount - 1
  25.     lCount = 1
  26.     sFile = Dir$(App.path & "\sounds\hit" & format$(CStr(lCount), "00") & ".wav")
  27.     Do While sFile <> vbNullString
  28.         lCount = lCount + 1
  29.         sFile = Dir$(App.path & "\sounds\hit" & format$(CStr(lCount), "00") & ".wav")
  30.     Loop
  31.     glNumHitSounds = lCount - 1
  32. End Sub
  33.  
  34. Public Function InitAudio() As Boolean
  35.     
  36.     Dim lCount As Long, dma As DMUS_AUDIOPARAMS
  37.     
  38.     On Error GoTo FailedInit
  39.     InitAudio = True
  40.     'Create our objects
  41.     Set dmPerf = dx.DirectMusicPerformanceCreate
  42.     Set dmLoad = dx.DirectMusicLoaderCreate
  43.     'Get the total number of sounds we have for each type of sound
  44.     SetNumberSounds
  45.     
  46.     'Using that information create an array of segments
  47.     ReDim dmSegBank(1 To glNumBankSounds)
  48.     ReDim dmSegHit(1 To glNumHitSounds)
  49.     
  50.     'Create a default audio path
  51.     dmPerf.InitAudio frmAir.hwnd, DMUS_AUDIOF_ALL, dma, , DMUS_APATH_SHARED_STEREOPLUSREVERB, 128
  52.     'Load each of the sounds
  53.     For lCount = 1 To glNumBankSounds
  54.         Set dmSegBank(lCount) = dmLoad.LoadSegment(App.path & "\sounds\bank" & format$(CStr(lCount), "00") & ".wav")
  55.         dmSegBank(lCount).Download dmPerf.GetDefaultAudioPath
  56.     Next
  57.     For lCount = 1 To glNumHitSounds
  58.         Set dmSegHit(lCount) = dmLoad.LoadSegment(App.path & "\sounds\hit" & format$(CStr(lCount), "00") & ".wav")
  59.         dmSegHit(lCount).Download dmPerf.GetDefaultAudioPath
  60.     Next
  61.     Set dmScore = dmLoad.LoadSegment(App.path & "\sounds\score.wav")
  62.     dmScore.Download dmPerf.GetDefaultAudioPath
  63.     Exit Function
  64.  
  65. FailedInit:
  66.     InitAudio = False
  67. End Function
  68.  
  69. Public Sub PlayRandomBankSound()
  70.     Dim lRnd As Long
  71.     
  72.     'Pick a valid 'Bank' sound randomly and play it
  73.     Randomize
  74.     lRnd = CLng(Rnd * glNumBankSounds) + 1
  75.     Do While lRnd < 1 Or lRnd > glNumBankSounds
  76.         lRnd = CLng(Rnd * glNumBankSounds) + 1
  77.     Loop
  78.     dmPerf.PlaySegmentEx dmSegBank(lRnd), DMUS_SEGF_SECONDARY, 0
  79. End Sub
  80.  
  81. Public Sub PlayRandomHitSound()
  82.     Dim lRnd As Long
  83.     
  84.     'Pick a valid 'Hit' sound randomly and play it
  85.     Randomize
  86.     lRnd = CLng(Rnd * glNumHitSounds) + 1
  87.     Do While lRnd < 1 Or lRnd > glNumHitSounds
  88.         lRnd = CLng(Rnd * glNumHitSounds) + 1
  89.     Loop
  90.     dmPerf.PlaySegmentEx dmSegHit(lRnd), DMUS_SEGF_SECONDARY, 0
  91. End Sub
  92.  
  93. Public Sub PlayScoreSound()
  94.     'Play the sound that happens when we score
  95.     dmPerf.PlaySegmentEx dmScore, DMUS_SEGF_SECONDARY, 0
  96. End Sub
  97.  
  98. Public Sub CleanupAudio()
  99.  
  100.     On Error Resume Next
  101.     Dim lCount As Long
  102.     
  103.     'Unload all of our sounds off of the audio path and destroy them
  104.     For lCount = 1 To glNumBankSounds
  105.         dmSegBank(lCount).Unload dmPerf.GetDefaultAudioPath
  106.         Set dmSegBank(lCount) = Nothing
  107.     Next
  108.     For lCount = 1 To glNumHitSounds
  109.         dmSegHit(lCount).Unload dmPerf.GetDefaultAudioPath
  110.         Set dmSegHit(lCount) = Nothing
  111.     Next
  112.     If Not (dmScore Is Nothing) Then dmScore.Unload dmPerf.GetDefaultAudioPath
  113.     Set dmScore = Nothing
  114.     
  115.     'Destroy the rest of the objects
  116.     Set dmPerf = Nothing
  117.     Set dmLoad = Nothing
  118. End Sub
  119.